#pragma once
#include "spa_types.h"
#include <string>
#include <map>

using namespace std;

class TNode
{
	friend class AST;
private:
	TNode();
	TNode(NodeType ntype, int stmt_num);

public:
	
	~TNode();
	void add_child(TNode* node, int nth_position);

	NODETYPE node_type;
	std::string value;
	int statement_number;
	TNode* parent_node;
	map<int,TNode*> child_nodes;
	TNode* right_sibling;
};